/*
 * Descompresor_getest.h
 *
 *  Created on: 30/11/2012
 *      Author: diego
 */

#ifndef DESCOMPRESOR_GETEST_H_
#define DESCOMPRESOR_GETEST_H_

#include <vector>
#include "../physical_layer/compresorGammaElias/ColeccionDeBits.h"
#include "../physical_layer/compresorGammaElias/Descompresor.h"

class DescompresorTestFixture: public testing::Test {
public:
	//DescompresorTestFixture();

    void SetUp()
    {
    }

    void TearDown()
    {
    }

	//virtual ~DescompresorTestFixture();
};

TEST_F( DescompresorTestFixture, PruebaDescompresion){
	ColeccionDeBits* particionBinaria1=new ColeccionDeBits();
	particionBinaria1->agregarUnosAlFinal(9);
	particionBinaria1->agregarUnCeroAlFinal();


	ColeccionDeBits* particionBinaria2=new ColeccionDeBits();

		particionBinaria2->agregarUnCeroAlFinal();

		particionBinaria2->agregarUnUnoAlFinal();
		particionBinaria2->agregarUnUnoAlFinal();

		particionBinaria2->agregarUnCeroAlFinal();

		particionBinaria2->agregarUnUnoAlFinal();

		particionBinaria2->agregarUnCeroAlFinal();
		particionBinaria2->agregarUnCeroAlFinal();

		particionBinaria2->agregarUnUnoAlFinal();
		particionBinaria2->agregarUnUnoAlFinal();


	Descompresor* descompresor=new  Descompresor(particionBinaria1,particionBinaria2);
	int resultado=descompresor->descomprimir();

	ASSERT_EQ(resultado,723);
}


TEST_F( DescompresorTestFixture, PruebaParticionBinaria1)
{
	ColeccionDeBits* particionBinaria1=new ColeccionDeBits();
	particionBinaria1->agregarUnosAlFinal(9);
	particionBinaria1->agregarUnCeroAlFinal();
	
	
	ColeccionDeBits* particionBinaria2=new ColeccionDeBits();
		
		particionBinaria2->agregarUnCeroAlFinal();

		particionBinaria2->agregarUnUnoAlFinal();
		particionBinaria2->agregarUnUnoAlFinal();

		particionBinaria2->agregarUnCeroAlFinal();

		particionBinaria2->agregarUnUnoAlFinal();

		particionBinaria2->agregarUnCeroAlFinal();
		particionBinaria2->agregarUnCeroAlFinal();

		particionBinaria2->agregarUnUnoAlFinal();
		particionBinaria2->agregarUnUnoAlFinal();

	Descompresor* descompresor=new  Descompresor(particionBinaria1,particionBinaria2);
	int particionEntera1=descompresor->obtenerParteEntera1();

	ASSERT_EQ(particionEntera1,512);

}

TEST_F( DescompresorTestFixture, PruebaParticionBinaria2)
{


	ColeccionDeBits* particionBinaria1=new ColeccionDeBits();
	particionBinaria1->agregarUnosAlFinal(9);
	particionBinaria1->agregarUnCeroAlFinal();


	ColeccionDeBits* particionBinaria2=new ColeccionDeBits();

		particionBinaria2->agregarUnCeroAlFinal();

		particionBinaria2->agregarUnUnoAlFinal();
		particionBinaria2->agregarUnUnoAlFinal();

		particionBinaria2->agregarUnCeroAlFinal();

		particionBinaria2->agregarUnUnoAlFinal();

		particionBinaria2->agregarUnCeroAlFinal();
		particionBinaria2->agregarUnCeroAlFinal();

		particionBinaria2->agregarUnUnoAlFinal();
		particionBinaria2->agregarUnUnoAlFinal();

	Descompresor* descompresor=new  Descompresor(particionBinaria1,particionBinaria2);
	int particionEntera2=descompresor->obtenerParteEntera2();

	ASSERT_EQ(particionEntera2,211);


}


#endif /* DESCOMPRESOR_GETEST_H_ */
